package com.locus.locus.server.twitter;

import java.util.ArrayList;
import java.util.List;

import twitter4j.Paging;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;

import com.google.appengine.api.datastore.Key;
import com.locus.locus.server.dados.DAO;
import com.locus.locus.server.dados.Estabelecimento;
import com.locus.locus.server.dados.Tweet;

public class BuscadorTweets {

	private final Twitter twitter;
	private final Estabelecimento estabelecimento;

	public BuscadorTweets(Twitter twitter, Estabelecimento estabelecimento) {
		this.twitter = twitter;
		this.estabelecimento = estabelecimento;
	}

	public void buscar() {
		try {
			final ResponseList<Status> timeline = this.twitter.getUserTimeline(this.estabelecimento.getIdTwitter(), new Paging(this.estabelecimento.getIdUltimoTweet()));
			final Key chaveEstabelecimento = this.estabelecimento.getKey();
			final String urlSite = this.estabelecimento.getUrlSite();
			final List<Tweet> tweets = new ArrayList<Tweet>(timeline.size());
			
			Tweet tweet;
			
			for(Status status:timeline){
				tweet = new Tweet(status);
				tweet.setChaveConfiguracaoEstabelecimento(chaveEstabelecimento);
				tweets.add(tweet);
				tweet.setCaminhoSite(urlSite);
			}
			if(!timeline.isEmpty()){
				this.estabelecimento.setIdUltimoTweet(timeline.get(0).getId());
			}
			this.estabelecimento.getUltimaAtualizacao().setTime(System.currentTimeMillis());
			DAO.salvarTodos(tweets);
			DAO.salvar(this.estabelecimento);
		} catch (TwitterException e) {
			e.printStackTrace();
		}
	}
}
